From 30f9fab4b418b1adc94bd4a49a987477481a460a Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Wed, 31 Oct 2001 20:20:12 +0000 Subject: [PATCH] Add GTK_SELECTION_NONE enum, #61695 Wed Oct 31 14:45:08 2001 Jonathan Blandford * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new GTK_SELECTION_NONE enum. (_gtk_tree_selection_internal_select_node): ditto * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add constness. * gtk/gtkcellrenderertoggle.c: more yummy constness. * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail if mode == GTK_SELECTION_NONE --- ChangeLog | 16 ++++++++++ ChangeLog.pre-2-0 | 16 ++++++++++ ChangeLog.pre-2-10 | 16 ++++++++++ ChangeLog.pre-2-2 | 16 ++++++++++ ChangeLog.pre-2-4 | 16 ++++++++++ ChangeLog.pre-2-6 | 16 ++++++++++ ChangeLog.pre-2-8 | 16 ++++++++++ docs/reference/gtk/tmpl/gtkenums.sgml | 1 + docs/reference/gtk/tmpl/gtktreeview.sgml | 7 +++++ gtk/gtkcellrenderer.h | 2 +- gtk/gtkcellrenderertoggle.c | 2 +- gtk/gtkclist.c | 10 ++++++ gtk/gtkenums.h | 1 + gtk/gtktreeselection.c | 39 ++++++++++++++++++------ tests/testtreesort.c | 1 - 15 files changed, 162 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index dc35752209..2b5ac14310 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index dc35752209..2b5ac14310 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index dc35752209..2b5ac14310 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index dc35752209..2b5ac14310 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index dc35752209..2b5ac14310 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index dc35752209..2b5ac14310 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index dc35752209..2b5ac14310 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,19 @@ +Wed Oct 31 14:45:08 2001 Jonathan Blandford + + * gtk/gtkenums.h (enum): Add GTK_SELECTION_NONE enum, #61695 + + * gtk/gtktreeselection.c (gtk_tree_selection_set_mode): Handle new + GTK_SELECTION_NONE enum. + (_gtk_tree_selection_internal_select_node): ditto + + * gtk/gtkcellrenderer.h (struct _GtkCellRendererClass): add + constness. + + * gtk/gtkcellrenderertoggle.c: more yummy constness. + + * gtk/gtkclist.c (gtk_clist_set_selection_mode): g_return_if_fail + if mode == GTK_SELECTION_NONE + Wed Oct 31 14:05:17 2001 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_class_init): Added a diff --git a/docs/reference/gtk/tmpl/gtkenums.sgml b/docs/reference/gtk/tmpl/gtkenums.sgml index 4d3f4dbf40..6c19bccb73 100644 --- a/docs/reference/gtk/tmpl/gtkenums.sgml +++ b/docs/reference/gtk/tmpl/gtkenums.sgml @@ -279,6 +279,7 @@ contains grayscale or red-green-blue data. +@GTK_SELECTION_NONE: @GTK_SELECTION_SINGLE: @GTK_SELECTION_BROWSE: @GTK_SELECTION_MULTIPLE: diff --git a/docs/reference/gtk/tmpl/gtktreeview.sgml b/docs/reference/gtk/tmpl/gtktreeview.sgml index ff9e29e27b..3234cc1c0b 100644 --- a/docs/reference/gtk/tmpl/gtktreeview.sgml +++ b/docs/reference/gtk/tmpl/gtktreeview.sgml @@ -735,6 +735,13 @@ GtkTreeView @treeview: the object which received the signal. + + + + + +@treeview: the object which received the signal. + diff --git a/gtk/gtkcellrenderer.h b/gtk/gtkcellrenderer.h index 7bfe468854..47fa367d52 100644 --- a/gtk/gtkcellrenderer.h +++ b/gtk/gtkcellrenderer.h @@ -93,7 +93,7 @@ struct _GtkCellRendererClass gboolean (* activate) (GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, - gchar *path, + const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, GtkCellRendererState flags); diff --git a/gtk/gtkcellrenderertoggle.c b/gtk/gtkcellrenderertoggle.c index 0a19e71fa9..3f7b054d73 100644 --- a/gtk/gtkcellrenderertoggle.c +++ b/gtk/gtkcellrenderertoggle.c @@ -49,7 +49,7 @@ static void gtk_cell_renderer_toggle_render (GtkCellRenderer *cel static gboolean gtk_cell_renderer_toggle_activate (GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, - const gchar *path, + const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, guint flags); diff --git a/gtk/gtkclist.c b/gtk/gtkclist.c index 0e1c467e0e..602850186f 100644 --- a/gtk/gtkclist.c +++ b/gtk/gtkclist.c @@ -1276,6 +1276,7 @@ gtk_clist_set_selection_mode (GtkCList *clist, GtkSelectionMode mode) { g_return_if_fail (GTK_IS_CLIST (clist)); + g_return_if_fail (mode != GTK_SELECTION_NONE); if (mode == clist->selection_mode) return; @@ -1299,6 +1300,9 @@ gtk_clist_set_selection_mode (GtkCList *clist, case GTK_SELECTION_SINGLE: gtk_clist_unselect_all (clist); break; + default: + /* Someone set it by hand */ + g_assert_not_reached (); } } @@ -3594,6 +3598,8 @@ toggle_row (GtkCList *clist, gtk_signal_emit (GTK_OBJECT (clist), clist_signals[SELECT_ROW], row, column, event); break; + default: + g_assert_not_reached (); } } @@ -3814,6 +3820,8 @@ real_select_all (GtkCList *clist) update_extended_selection (clist, clist->rows); GTK_CLIST_GET_CLASS (clist)->resync_selection (clist, NULL); return; + default: + g_assert_not_reached (); } } @@ -7390,6 +7398,8 @@ gtk_clist_drag_begin (GtkWidget *widget, clist->anchor = -1; case GTK_SELECTION_BROWSE: break; + default: + g_assert_not_reached (); } info = g_dataset_get_data (context, "gtk-clist-drag-source"); diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index aac459b4d3..2cfcf83851 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -317,6 +317,7 @@ typedef enum /* list selection modes */ typedef enum { + GTK_SELECTION_NONE, /* Nothing can be selected */ GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE, diff --git a/gtk/gtktreeselection.c b/gtk/gtktreeselection.c index 6e67d72d4f..01ec82dac3 100644 --- a/gtk/gtktreeselection.c +++ b/gtk/gtktreeselection.c @@ -176,22 +176,33 @@ void gtk_tree_selection_set_mode (GtkTreeSelection *selection, GtkSelectionMode type) { + GtkTreeSelectionFunc tmp_func; g_return_if_fail (GTK_IS_TREE_SELECTION (selection)); if (selection->type == type) return; - if (type == GTK_SELECTION_SINGLE || - type == GTK_SELECTION_BROWSE) + + if (type == GTK_SELECTION_NONE) + { + gtk_tree_row_reference_free (selection->tree_view->priv->anchor); + /* We do this so that we unconditionally unset all rows + */ + tmp_func = selection->user_func; + selection->user_func = NULL; + gtk_tree_selection_unselect_all (selection); + selection->user_func = tmp_func; + } + else if (type == GTK_SELECTION_SINGLE || + type == GTK_SELECTION_BROWSE) { GtkRBTree *tree = NULL; GtkRBNode *node = NULL; gint selected = FALSE; + GtkTreePath *anchor_path = NULL; if (selection->tree_view->priv->anchor) { - GtkTreePath *anchor_path; - anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); if (anchor_path) @@ -203,19 +214,25 @@ gtk_tree_selection_set_mode (GtkTreeSelection *selection, if (node && GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) selected = TRUE; - - gtk_tree_path_free (anchor_path); } } - /* FIXME: if user_func is set, then it needs to unconditionally unselect - * all. + + /* We do this so that we unconditionally unset all rows */ + tmp_func = selection->user_func; + selection->user_func = NULL; gtk_tree_selection_unselect_all (selection); + selection->user_func = tmp_func; - /* FIXME are we properly emitting the selection_changed signal here? */ if (node && selected) - GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_SELECTED); + _gtk_tree_selection_internal_select_node (selection, + node, + tree, + anchor_path, + 0); + gtk_tree_path_free (anchor_path); } + selection->type = type; } @@ -955,6 +972,8 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection, gint dirty = FALSE; GtkTreePath *anchor_path = NULL; + if (selection->type == GTK_SELECTION_NONE) + return; if (selection->tree_view->priv->anchor) anchor_path = gtk_tree_row_reference_get_path (selection->tree_view->priv->anchor); diff --git a/tests/testtreesort.c b/tests/testtreesort.c index 8cdcb116f6..fd504f6d7b 100644 --- a/tests/testtreesort.c +++ b/tests/testtreesort.c @@ -93,7 +93,6 @@ main (int argc, char *argv[]) ssmodel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (smodel)); */ tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); - /* 12 iters now, 12 later... */ for (i = 0; data[i].word_1 != NULL; i++) { -- 2.30.2